// components/login/index.js
const region = [
  "+86 中国大陆",
  "+852 中国香港",
  "+853 中国澳门",
  "+886 中国台湾",
  "+65 新加坡",
  "+61 澳大利亚",
  "+64 新西兰",
  "+81 日本",
  "+82 韩国",
  "+1 加拿大",
  "+1 美国",
  "+7 哈萨克斯坦",
  "+7 俄罗斯",
  "+20 埃及",
  "+27 南非",
  "+30 希腊",
  "+31 荷兰",
  "+32 比利时",
  "+33 法国",
  "+34 加那利群岛",
  "+34 西班牙",
  "+36 匈牙利",
  "+39 意大利",
  "+40 罗马尼亚",
  "+41 列支敦士登",
  "+41 瑞士",
  "+43 奥地利",
  "+44 英国",
  "+45 丹麦",
  "+46 瑞典",
  "+47 挪威",
  "+48 波兰",
  "+49 德国",
  "+51 秘鲁",
  "+52 墨西哥",
  "+53 古巴",
  "+54 阿根廷",
  "+55 巴西",
  "+56 智利",
  "+57 哥伦比亚",
  "+58 委内瑞拉",
  "+60 马来西亚",
  "+619164 圣诞岛",
  "+619162 科科斯岛",
  "+62 印度尼西亚",
  "+63 菲律宾",
  "+66 泰国",
  "+84 越南",
  "+85 朝鲜",
  "+90 土耳其",
  "+91 印度",
  "+92 巴基斯坦",
  "+93 阿富汗",
  "+94 斯里兰卡",
  "+95 缅甸",
  "+98 伊朗",
  "+212 摩洛哥",
  "+213 阿尔及利亚",
  "+216 突尼斯",
  "+218 利比亚",
  "+220 冈比亚",
  "+221 塞内加尔",
  "+222 毛里塔尼亚",
  "+223 马里",
  "+224 几内亚",
  "+225 科特迪瓦",
  "+226 布基纳法索",
  "+227 尼日尔",
  "+228 多哥",
  "+229 贝宁",
  "+230 毛里求斯",
  "+231 利比里亚",
  "+232 塞拉利昂",
  "+233 加纳",
  "+234 尼日利亚",
  "+235 乍得",
  "+236 中非",
  "+237 喀麦隆",
  "+238 佛得角",
  "+239 圣多美和普林西比",
  "+240 赤道几内亚",
  "+241 加蓬",
  "+242 刚果",
  "+243 刚果民主",
  "+243 扎伊尔",
  "+244 安哥拉",
  "+245 几内亚比绍",
  "+246 迪戈加西亚岛",
  "+247 阿森松(英)",
  "+248 塞舌尔",
  "+249 苏丹",
  "+250 卢旺达",
  "+251 埃塞俄比亚",
  "+252 索马里",
  "+253 吉布提",
  "+254 肯尼亚",
  "+255 坦桑尼亚",
  "+256 乌干达",
  "+257 布隆迪",
  "+258 莫桑比克",
  "+259 桑给巴尔",
  "+260 赞比亚",
  "+261 马达加斯加",
  "+262 留尼汪岛",
  "+263 津巴布韦",
  "+264 纳米比亚",
  "+265 马拉维",
  "+266 莱索托",
  "+267 博茨瓦纳",
  "+268 斯威士兰",
  "+269 科摩罗",
  "+269 马约特岛",
  "+290 圣赫勒拿",
  "+291 厄立特里亚",
  "+297 阿鲁巴岛",
  "+298 法罗群岛(丹)",
  "+299 格陵兰岛",
  "+350 直布罗陀(英)",
  "+351 葡萄牙",
  "+352 卢森堡",
  "+353 爱尔兰",
  "+354 冰岛",
  "+355 阿尔巴尼亚",
  "+356 马耳他",
  "+357 塞浦路斯",
  "+358 芬兰",
  "+359 保加利亚",
  "+370 立陶宛",
  "+371 拉托维亚",
  "+372 爱沙尼亚",
  "+373 摩尔多瓦",
  "+374 亚美尼亚",
  "+375 白俄罗斯",
  "+376 安道尔",
  "+377 摩纳哥",
  "+378 圣马利诺",
  "+378 圣马力诺",
  "+379 梵蒂冈",
  "+380 乌克兰",
  "+381 塞尔维亚",
  "+381 南斯拉夫",
  "+383 克罗地亚",
  "+386 斯洛文尼亚",
  "+387 波黑",
  "+387 波斯尼亚和黑塞哥维那",
  "+389 马其顿",
  "+420 捷克",
  "+421 斯洛伐克",
  "+500 福克兰群岛",
  "+501 伯利兹",
  "+502 危地马拉",
  "+503 萨尔瓦多",
  "+504 洪都拉斯",
  "+505 尼加拉瓜",
  "+506 哥斯达黎加",
  "+507 巴拿马",
  "+508 圣皮埃尔岛及密克隆岛",
  "+509 海地",
  "+590 瓜德罗普岛(法)",
  "+591 玻利维亚",
  "+592 圭亚那",
  "+593 厄瓜多尔",
  "+594 法属圭亚那",
  "+595 巴拉圭",
  "+596 马提尼克(法)",
  "+597 苏里南",
  "+598 乌拉圭",
  "+599 荷属安的列斯群岛",
  "+670 马里亚纳群岛",
  "+670 东帝汶",
  "+671 关岛(美)",
  "+673 文莱",
  "+674 瑙鲁",
  "+675 巴布亚新几内亚",
  "+676 汤加",
  "+677 所罗门群岛",
  "+678 瓦努阿图",
  "+679 斐济",
  "+680 帕劳",
  "+680 帕劳(美)",
  "+681 瓦里斯和富士那群岛",
  "+682 库克群岛",
  "+682 科克群岛(新)",
  "+683 纽埃岛(新)",
  "+684 东萨摩亚(美)",
  "+685 萨摩亚",
  "+685 西萨摩亚",
  "+686 基里巴斯",
  "+687 新喀里多尼亚群岛(法)",
  "+688 图瓦卢",
  "+689 法属波里尼西亚",
  "+690 托克劳群岛(新)",
  "+691 密克罗尼西亚",
  "+691 密克罗尼西亚(美)",
  "+692 马绍尔群岛",
  "+809 多米尼加联邦",
  "+855 柬埔寨",
  "+856 老挝",
  "+880 孟加拉国",
  "+930 巴勒斯坦",
  "+960 马尔代夫",
  "+961 黎巴嫩",
  "+962 约旦",
  "+963 叙利亚",
  "+964 伊拉克",
  "+965 科威特",
  "+966 沙特阿拉伯",
  "+967 西撒哈拉",
  "+967 也门",
  "+968 阿曼",
  "+971 阿拉伯联合酋长国",
  "+972 以色列",
  "+973 巴林",
  "+974 卡塔尔",
  "+975 不丹",
  "+976 蒙古",
  "+977 尼泊尔",
  "+992 塔吉克斯坦",
  "+993 土库曼斯坦",
  "+994 阿塞拜疆",
  "+995 格鲁吉亚",
  "+996 吉尔吉斯斯坦",
  "+998 乌兹别克斯坦",
  "+1246 巴巴多斯",
  "+1264 安圭拉岛(英)",
  "+1268 安提瓜和巴布达",
  "+1345 开曼群岛(英)",
  "+1441 百慕大群岛(英)",
  "+1664 蒙特塞拉特岛(英)",
  "+1758 圣卢西亚",
  "+1767 多米尼加",
  "+1784 圣文森特和格林纳丁斯",
  "+1784 圣文森特岛(英)",
  "+1787 波多黎各(美)",
  "+1808 夏威夷",
  "+1808 中途岛(美)",
  "+1808 威克岛(美)",
  "+1809 巴哈马",
  "+1809 多米尼克国",
  "+1809 格林纳达",
  "+1809 圣基茨和尼维斯",
  "+1809 圣克里斯托弗和尼维斯",
  "+1809 特立尼达和多巴哥",
  "+1809 特克斯和凯科斯群岛",
  "+1809 维尔京群岛(英)",
  "+1809 维尔京群岛和圣罗克伊",
  "+1876 牙买加",
  "+1907 阿拉斯加",
  "+6723 诺福克岛(澳)",
];

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    //站点简称
    name: { type: String, value: "" },
    //站点logo
    logo_src: { type: String, value: "" },
    //短信等待间隔，单位（秒）
    sms_interval: {
      type: Number,
      value: 90,
    },
    //短信发送地址
    sms_url: {
      type: String,
      value: "",
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    sms_get_tip: "获取验证码",
    sms_after_tip: "",
    disable_sms: false,
    call_success: true,
    sms_login: true,
    region_index: 0,
    region_text: "",
    region_numer: "",
    mobile: "18210819140",
    valicode: "",
    account: "",
    password: "",
  },

  ready() {
    this.setData({
      region,
    });
    this.initPicker(0);
  },
  /**
   * 组件的方法列表
   */
  methods: {
    initPicker(region_index) {
      // let { region } = this.data;
      let region_numer = region[region_index].split(" ")[0];
      let region_text = region[region_index].split(" ")[1];
      this.setData({
        region_index,
        region_text,
        region_numer,
      });
    },
    bindPickerChange(e) {
      let region_index = parseInt(e.detail.value);
      this.initPicker(region_index);
    },
    handleInputMobile(e) {
      this.setData({
        mobile: e.detail.value,
      });
    },
    handleInputValiCode(e) {
      this.setData({
        valicode: e.detail.value,
      });
    },
    handleInputAccount(e) {
      this.setData({
        account: e.detail.value,
      });
    },
    handleInputPassword(e) {
      this.setData({
        password: e.detail.value,
      });
    },
    handleGetValicode(e) {
      if (!this.data.mobile) {
        wx.showToast({
          title: "请输入手机号码",
          icon: "none",
          duration: 2000,
        });
        return;
      }

      if (!this.data.sms_url) {
        wx.showToast({
          title: "开发者未设置短信接口！",
          icon: "none",
          duration: 2000,
        });
        return;
      }

      let that = this;
      //禁用发送
      that.setData({
        disable_sms: true,
        sms_after_tip: "",
      });

      let times = this.data.sms_interval;
      let src_tip = this.data.sms_get_tip;
      let req_url = this.data.sms_url.replace("{mobile}", this.data.mobile);
      wx.request({
        url: req_url,
        success: function (res) {
          let { data } = res;
          console.log(res);
          if (data.code == 0) {
            that.setData({
              call_success: true,
              sms_after_tip: "短信验证码已发送，可能会有延后请耐心等待",
            });
            let interval = setInterval(() => {
              times--;
              if (times == 0) {
                that.setData({
                  sms_get_tip: src_tip,
                  sms_after_tip: "",
                });
                clearInterval(interval);
              } else {
                that.setData({
                  sms_get_tip: times + "秒后重发",
                });
              }
            }, 1000);
          } else {
            let msg = data.message || data.data;
            that.setData({
              call_success: false,
              sms_after_tip: msg,
            });
          }
        },
        fail: function (err) {
          console.log(err);
          that.setData({
            call_success: false,
            sms_after_tip: "发送失败，请重试，若不能使用，请联系客服！",
          });
          console.warn(err);
        },
        complete: function (e) {
          console.log(e);
          //启用发送
          that.setData({
            disable_sms: false,
          });
        },
      });
    },
    login() {
      let { sms_login, mobile, valicode, account, password } = this.data;
      if (sms_login) {
        if (!mobile) {
          wx.showToast({
            title: "请输入手机号码",
            icon: "none",
            duration: 2000,
          });
          return;
        }
        if (!valicode) {
          wx.showToast({
            title: "请输入验证码",
            icon: "none",
            duration: 2000,
          });
          return;
        }
      } else {
        if (!account) {
          wx.showToast({
            title: "请输入账户名",
            icon: "none",
            duration: 2000,
          });
          return;
        }
        if (!password) {
          wx.showToast({
            title: "请输入密码",
            icon: "none",
            duration: 2000,
          });
          return;
        }
      }
      
      delete this.data.sms_get_tip;
      delete this.data.sms_after_tip;

      delete this.data.disable_sms;
      delete this.data.call_success;
      delete this.data.region_index;
      delete this.data.region;

      delete this.data.site_logo_src;
      delete this.data.site_name;

      delete this.data.sms_url;
      delete this.data.sms_interval;

      this.triggerEvent("login", this.data);
    },
    switch() {
      let { sms_login } = this.data;
      this.setData({
        sms_login: !sms_login,
      });
    },
  },
});
